/**
 *axios封装
 * 请求拦截、相应拦截、错误统一处理
 */

import axios from "axios";
// import { useUserStore } from "@/store";
// const userStore = useUserStore();


// import router from '@/router'

// import store from '@/store/index'
// 环境的切换
if (process.env.NODE_ENV == 'development') {
    axios.defaults.baseURL = 'http://10.36.131.120:8500/'
} else if (process.env.NODE_ENV == 'debug') {
    axios.defaults.baseURL = ''
} else if (process.env.NODE_ENV == 'production') {
    axios.defaults.baseURL = 'http://10.36.131.120:8500/'
}
// axios.defaults.baseURL = 'http://10.36.131.120:8500/users'

// 请求超时时间
axios.defaults.timeout = 5000;
// post请求头
axios.defaults.headers.post["Content-Type"] =
    "application/x-www-form-urlencoded;charset=UTF-8";

axios.interceptors.request.use(

    // 响应拦截器

    // 添加响应拦截器
    (config) => {
        // 每次发送请求之前判断是否存在token，如果存在，则统一在http请求的header都加上token，不用每次请求都手动添加了
        // 即使本地存在token，也有可能token是过期的，所以在响应拦截器中要对返回状态进行判断
        // const token = 'eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ7XCJuYW1lXCI6XCLkvKDmmbrmlZnogrIrMVwiLFwiaWRcIjpcIjEzNjk1OTQ5NTQ3Mzk4NTk0NThcIixcInVzZXJuYW1lXCI6XCJ4aWFvdHV4aWFuMDAxXCJ9IiwiaWF0IjoxNjcwOTgyMDY3LCJleHAiOjE2NzEyNDEyNjd9.rNMvmpC2hUacQiR8Ca8U1xm6yy7ddhu9iFGEmC9UBfI'
        const token = localStorage.getItem("token");
        token && (config.headers.Authorization = token);
        return config;
    },
    (error) => {
        return Promise.error(error);
    }
);
// 响应拦截器


axios.interceptors.response.use(
    function (response) {
        return response;
    },
    function (error) {
        return Promise.reject(error);
    }
);

/*
 * get方法，对应get请求
 * @param {String} url [请求的url地址]
 * @param {Object} params [请求时携带的参数]
 */
export function get(url, params) {
    return new Promise((resolve, reject) => {
        axios
            .get(url, {
                params: params,
            })
            .then((res) => {
                return resolve(res.data);
            })
            .catch((err) => {
                return reject(err.data);
            });
    });
}
/**
 * post方法，对应post请求
 * @param {String} url [请求的url地址]
 * @param {Object} params [请求时携带的参数]
 */
export function post(url, params) {
    return new Promise((resolve, reject) => {
        axios
            .post(url, params)
            .then((res) => {
                return resolve(res.data);
            })
            .catch((err) => {
                return reject(err);
            });
    });
}

/**
 * put方法，对应put请求
 * @param {String} url [请求的url地址]
 * @param {Object} params [请求时携带的参数]
 */
export function put(url, params) {
    return new Promise((resolve, reject) => {
        axios
            .put(url, params)
            .then((res) => {
                return resolve(res.data);
            })
            .catch((err) => {
                return reject(err.data);
            });
    });
}

/**
 * delete方法，对应delete请求
 * @param {String} url [请求的url地址]
 * @param {Object} params [请求时携带的参数]
 */
export function deleted(url, params) {
    return new Promise((resolve, reject) => {
        axios
            .delete(url, {
                params: params,
            })
            .then((res) => {
                return resolve(res.data);
            })
            .catch((err) => {
                return reject(err.data);
            });
    });
}
